package com.wsx.first.a;

import java.util.Scanner;

/**
 * @author: wangshunxi
 * @date: 2022/5/6 10:26
 * @Description:
 */
public class Main0003 {

/**
 TLV编码是按TagLengthValue格式进行编码的，一段码流中的信元用tag标识，tag在码流中唯一不重复，length表示信元value的长度，value表示信元的值，码流以某信元的tag开头，tag固定占一个字节，length固定占两个字节，字节序为小端序，现给定tlv格式编码的码流以及需要解码的信元tag，请输出该信元的value。
 输入码流的16进制字符中，不包括小写字母；
 且要求输出的16进制字符串中也不要包含小写字母；
 码流字符串的最大长度不超过50000个字节。
 第一行为第一个字符串 ，表示待解码信元的tag；
 输入第二行为一个字符串， 表示待解码的16进制码流；
 字节之间用空格分割。
 输出一个字符串，表示待解码信元以16进制表示的value。
 */
    public static void main(String[] args) {
        try (Scanner scanner = new Scanner(System.in)) {
            // 31
            String tag = scanner.nextLine();
            // 32 01 00 AE 90 02 00 01 02 30 03 00 AB 32 31 31 02 00 32 33 33 01 00 CC
            String source = scanner.nextLine();
            solution(tag, source);
        }
    }

    private static void solution(String tag, String source) {
        int p = 0;
        while (p < source.length()) {
            String curTag = source.substring(p, p + 2);
            String lenHEX = source.substring(p + 6, p + 8) + source.substring(p + 3, p + 5);
            int lenDEC = Integer.parseInt(lenHEX, 16);
            //tag固定占用一字节 length固定占用两个字节 空格占用一个字节 (1+2)*3
            if (tag.equals(curTag)) {
                String value = source.substring(p + 9, p + 9 + lenDEC * 3);
                System.out.println(value);
            }
            p += 3 * 3 + lenDEC * 3;
        }
    }

}
